HandStack 서버 안정성 높이기

PM2를 이용한 서버 프로세스 관리 및 로그 모니터링

QCN

PM2, 서버를 위한 든든한 경비원

  • PM2란 무엇일까요?
    • Node.js 애플리케이션을 위한 프로세스 관리 도구입니다.
    • 서버가 예기치 않게 종료되었을 때 자동으로 재시작해줍니다.
    • 여러 CPU 코어를 활용하는 클러스터링 기능을 제공합니다.
    • 서버 활동을 기록하는 로그 관리 기능을 통합적으로 지원합니다.
PM2는 여러분의 백엔드 서버를 관리해 주는 '경비원' 같아요. 서버가 죽으면 자동으로 다시 살려주고, 누가 언제 들어왔는지(로그) 꼼꼼히 기록해 두죠.
QCN

핸즈온: PM2 설치 및 실행

  • 목표: PM2를 설치하고 HandStack 서버를 실행해봅니다.

    1. PM2 전역 설치
    • 터미널에 아래 명령어를 입력하여 PM2를 설치합니다.
    npm install -g pm2
    
    1. HandStack 앱 PM2로 실행
    • Node.js 기반 HandStack 프로젝트의 빌드된 서버 파일을 실행합니다.
    • --name 옵션으로 프로세스에 별명을 붙여 관리하기 쉽게 만듭니다.
    # Node.js 서버 실행 예시
    pm2 start dist/server/main.js --name my-handstack-app
    
    • 또는, ecosystem.config.js 설정 파일을 만들어 더 체계적으로 관리할 수 있습니다.
QCN

PM2 필수 명령어

  • 다음 명령어들로 실행 중인 서버 프로세스를 손쉽게 제어할 수 있습니다.
명령어 설명
pm2 list 현재 실행 중인 모든 프로세스 목록을 보여줍니다.
pm2 logs 모든 프로세스의 실시간 로그를 출력합니다.
pm2 restart [앱이름] 지정한 앱을 무중단으로 재시작합니다.
pm2 stop [앱이름] 지정한 앱을 중지시킵니다.
pm2 delete [앱이름] PM2 목록에서 지정한 앱을 삭제합니다.
QCN

핸즈온: 실시간 로그 확인하기

  • 목표: pm2 logs 명령어로 HandStack 서버의 활동을 실시간으로 관찰합니다.

  • pm2 logs 명령어 사용법

    • 특정 앱의 로그만 보거나, 최신 로그의 줄 수를 지정할 수 있습니다.

    • --follow 옵션은 새로운 로그가 발생할 때마다 계속해서 보여줍니다.

      # my-handstack-app의 최신 로그 100줄을 실시간으로 확인
      pm2 logs my-handstack-app --lines 100 --follow
      
  • 무중단 재시작 테스트

      1. 서버 코드를 일부 수정한 후 저장합니다.
      1. pm2 restart my-handstack-app 명령어를 실행합니다.
      1. 서비스 중단 없이 변경 사항이 적용되는 것을 확인합니다.
QCN

서버의 건강 상태 확인, 모니터링

로깅이 서버의 '일기장'이라면, 모니터링은 서버의 '건강검진표'입니다. 우리 서버가 얼마나 건강하게 잘 돌아가는지 숫자로 보여주죠.
  • 모니터링의 목적
    • 시스템의 성능, 안정성, 가용성을 지속적으로 확인합니다.
    • 문제가 발생했을 때 신속하게 원인을 감지하고 대응하기 위함입니다.
QCN

무엇을 확인해야 할까? 주요 모니터링 지표

  • 백엔드 서버의 건강 상태를 파악하기 위한 핵심 지표들입니다.

  • 시스템 리소스

    • CPU 사용률: 서버의 두뇌가 얼마나 바쁘게 일하는지
    • 메모리 사용률: 작업 공간을 얼마나 사용하고 있는지
    • 네트워크 I/O: 데이터를 얼마나 주고받는지
    • 디스크 I/O: 하드디스크를 얼마나 읽고 쓰는지
  • 애플리케이션 성능

    • API 응답 시간: 사용자의 요청에 얼마나 빨리 대답하는지
    • 에러율: 요청 중 실패하는 비율이 얼마나 되는지
    • 요청 처리량 (Throughput): 일정 시간 동안 얼마나 많은 요청을 처리하는지
QCN

핸즈온: PM2로 기본 모니터링하기

  • 목표: pm2 monit 명령어로 CLI 기반 대시보드에서 서버 상태를 관찰합니다.

    1. 모니터링 대시보드 실행
    • 터미널에 아래 명령어를 입력합니다.
    pm2 monit
    
    • 실행 중인 프로세스 목록과 함께 CPU, 메모리 사용량을 실시간으로 볼 수 있습니다.
    1. 부하 테스트 및 관찰
    • Postman과 같은 도구로 서버 API에 반복적으로 요청을 보냅니다.
    • pm2 monit 대시보드에서 부하에 따라 CPU와 메모리 사용량이 어떻게 변하는지 관찰합니다.
QCN

더 나아가기: 전문 모니터링 도구

  • PM2의 모니터링은 간단한 현황 파악에 유용합니다.

  • 더 깊이 있고, 장기적인 데이터 분석을 위해서는 전문 도구를 사용합니다.

  • 주요 모니터링 도구 (개념)

    • Prometheus: 시계열 데이터를 수집하고 저장하는 데이터베이스
    • Grafana: Prometheus 등의 데이터를 가져와 시각적으로 아름다운 대시보드를 만드는 도구
    • ELK Stack: 로그 데이터를 수집(Logstash), 검색/분석(Elasticsearch), 시각화(Kibana)하는 통합 솔루션
  • 이 도구들은 HandStack 서버 운영을 더욱 전문적으로 만들어줍니다.

QCN

정리

  • PM2를 사용하면 Node.js 서버 프로세스를 안정적으로 관리하고 무중단 운영이 가능합니다.
  • pm2 logs 명령어로 서버의 활동 기록을 실시간으로 확인할 수 있습니다.
  • 모니터링은 서버의 건강 상태를 진단하는 필수 활동입니다.
  • pm2 monit으로 CPU, 메모리 등 기본 지표를 쉽게 확인할 수 있습니다.
  • HandStack으로 만든 서비스를 안정적으로 운영하기 위해 로깅과 모니터링을 생활화합시다.
QCN

Q & A

QCN